package com.yuandian.middle.platform.mapper;

import com.yuandian.api.middle_platform.po.InternalOrgPojo;
import com.yuandian.api.middle_platform.po.UserProviderRelationshipPojo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 说明：单位能力总览-mapper接口
 * @Author tianlr
 * @Date 2023/5/16 10:35
 */
@Mapper
public interface OrgAbilityOverviewMapper {

    /**
     * 根据提供方编码/能力编码/服务编码查询使用方编码（内部订购单表查询）
     * @param orgCode 单位编码
     * @param abilityCode 能力编码
     * @param serviceCode 服务编码
     * @return
     */
    public List<String> selectInternalPurchase(@Param("orgCode") String orgCode, @Param("abilityCode") String abilityCode, @Param("serviceCode") String serviceCode);

    /**
     * 根据提供方编码/能力编码查询使用方编码（外部订购单表查询）
     * @param orgCode 单位编码
     * @param abilityCode 能力编码
     * @return
     */
    public List<String> selectExternalPurchase(@Param("orgCode") String orgCode, @Param("abilityCode") String abilityCode);

    /**
     * 根据提供方编码/能力编码/服务编码查询使用方编码（使用方提供方能力关系表）
     * @param orgCode 单位编码
     * @param abilityCode 能力编码
     * @param serviceCode 服务编码
     * @return
     */
    public List<UserProviderRelationshipPojo> selectUserProviderRelationship(@Param("orgCode") String orgCode, @Param("abilityCode") String abilityCode, @Param("serviceCode") String serviceCode);

    /**
     * 根据提供方编码/使用方编码/能力编码查询订单量（内部订购单表查询）
     * @param providerOrgCode 提供方编码
     * @param userOrgCode 使用方编码
     * @param abilityCode 能力编码
     * @return
     */
    public int selectInternalPurchaseCount(@Param("providerOrgCode") String providerOrgCode, @Param("userOrgCode") String userOrgCode, @Param("abilityCode") String abilityCode);

    /**
     * 根据使用方编码查询能力编码（内部订购单表查询）
     * @param orgCode 单位编码
     * @return
     */
    public List<String> selectAbilityInternalPurchaseByUser(@Param("orgCode") String orgCode);

    /**
     * 根据使用方编码查询能力编码（使用方提供方能力关系表）
     * @param orgCode 单位编码
     * @return
     */
    public List<String> selectAbilityRelationshipByUser(@Param("orgCode") String orgCode);

    /**
     * 查询单位
     * @param orgCode 单位编码
     * @return
     */
    public List<InternalOrgPojo> selectOrg(@Param("orgCode") String orgCode);
}
